using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._NetworkDiagramTools._Configuration
{
    /// <summary>
    /// <para>Add Trace Rule</para>
    /// <para>Adds a diagram rule to automatically execute a trace on a utility network or trace network  during the building of diagrams based on an existing template. The resulting traced network features and network objects are used to build the diagram content.</para>
    /// <para>添加逻辑示意图规则，以便在基于现有模板构建逻辑示意图期间自动对公共设施网络或追踪网络执行追踪。生成的追踪网络要素和网络对象用于构建逻辑示意图内容。</para>
    /// </summary>    
    [DisplayName("Add Trace Rule")]
    public class AddTraceRule : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public AddTraceRule()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_utility_network">
        /// <para>Input Network</para>
        /// <para>The utility network or trace network containing the diagram template to modify.</para>
        /// <para>包含要修改的逻辑示意图模板的公共设施网络或追踪网络。</para>
        /// </param>
        /// <param name="_template_name">
        /// <para>Input Diagram Template</para>
        /// <para>The name of the diagram template to modify.</para>
        /// <para>要修改的逻辑示意图模板的名称。</para>
        /// </param>
        /// <param name="_is_active">
        /// <para>Active</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the rule will be active when generating and updating diagrams based on the specified template.
        ///   <bulletList>
        ///     <bullet_item>Checked—The added rule will become active during the generation and update of any diagrams based on the input template. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The added rule will not become active during the generation or update of any diagrams based on the input template.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定在基于指定模板生成和更新关系图时，规则是否处于活动状态。
        ///   <bulletList>
        ///     <bullet_item>选中 - 在基于输入模板生成和更新任何逻辑示意图期间，添加的规则将变为活动状态。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 在基于输入模板生成或更新任何逻辑示意图期间，添加的规则将不会变为活动状态。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_trace_type">
        /// <para>Trace Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of trace the rule will perform to build the diagram content.</para>
        ///   <bulletList>
        ///     <bullet_item>Connected— A connected trace is executed from the utility network or trace network elements currently represented in the diagram when the rule starts and spans outward along connected elements. This is the default.</bullet_item><para/>
        ///     <bullet_item>Subnetwork— A subnetwork trace is executed from the utility network elements currently represented in the diagram when the rule starts and spans outward along connected elements to find sources or sinks from which it spans outward along the related subnetwork.</bullet_item><para/>
        ///     <bullet_item>Upstream—An upstream trace is executed from the utility network or trace network elements currently represented in the diagram when the rule starts to discover elements upstream.</bullet_item><para/>
        ///     <bullet_item>Downstream—A downstream trace is executed from the utility network or trace network elements currently represented in the diagram when the rule starts to discover elements downstream.</bullet_item><para/>
        ///     <bullet_item>Shortest path— A shortest path trace is executed from the trace network features currently specified as starting points in the diagram when the rule starts to discover features along the shortest path between those starting points. The cost of traversing the path is determined based on the network attribute set for the Shortest Path Network Attribute Name parameter value regardless of flow direction.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定规则在生成关系图内容时将执行的跟踪类型。</para>
        ///   <bulletList>
        ///     <bullet_item>已连接 - 当规则启动并沿连接的元素向外扩展时，将从逻辑示意图中当前表示的公共设施网络或追踪网络元素执行连接的追踪。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>子网 - 当规则启动并沿连接的元素向外延伸以查找沿相关子网向外延伸的源或汇时，将从逻辑示意图中当前表示的公共设施网络元素执行子网追踪。</bullet_item><para/>
        ///     <bullet_item>上游 - 当规则开始发现上游元素时，将从逻辑示意图中当前表示的公共设施网络或追踪网络元素执行上游追踪。</bullet_item><para/>
        ///     <bullet_item>下游 - 当规则开始发现下游元素时，将从逻辑示意图中当前表示的公共设施网络或追踪网络元素执行下游追踪。</bullet_item><para/>
        ///     <bullet_item>最短路径 - 当规则开始发现这些起点之间的最短路径上的要素时，将从逻辑示意图中当前指定为起点的追踪网络要素执行最短路径追踪。无论流向如何，遍历路径的成本都是根据为最短路径网络属性名称参数值设置的网络属性确定的。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public AddTraceRule(object _in_utility_network, object _template_name, _is_active_value _is_active, object _trace_type)
        {
            this._in_utility_network = _in_utility_network;
            this._template_name = _template_name;
            this._is_active = _is_active;
            this._trace_type = _trace_type;
        }
        public override string ToolboxName => "Network Diagram Tools";

        public override string ToolName => "Add Trace Rule";

        public override string CallName => "nd.AddTraceRule";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_utility_network, _template_name, _is_active.GetGPValue(), _trace_type, _domain_network, _tier, _target_tier, _include_structures.GetGPValue(), _include_barriers.GetGPValue(), _condition_barriers, _function_barriers, _traversability_scope.GetGPValue(), _filter_barriers, _filter_function_barriers, _filter_scope.GetGPValue(), _filter_bitset_network_attribute_name, _filter_nearest.GetGPValue(), _nearest_count, _nearest_cost_network_attribute, _nearest_categories, _nearest_assets, _propagators, _description, _out_utility_network, _out_template_name, _allow_indeterminate_flow.GetGPValue(), _path_direction.GetGPValue(), _path_network_weight_name];

        /// <summary>
        /// <para>Input Network</para>
        /// <para>The utility network or trace network containing the diagram template to modify.</para>
        /// <para>包含要修改的逻辑示意图模板的公共设施网络或追踪网络。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Network")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_utility_network { get; set; }


        /// <summary>
        /// <para>Input Diagram Template</para>
        /// <para>The name of the diagram template to modify.</para>
        /// <para>要修改的逻辑示意图模板的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Diagram Template")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _template_name { get; set; }


        /// <summary>
        /// <para>Active</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the rule will be active when generating and updating diagrams based on the specified template.
        ///   <bulletList>
        ///     <bullet_item>Checked—The added rule will become active during the generation and update of any diagrams based on the input template. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The added rule will not become active during the generation or update of any diagrams based on the input template.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定在基于指定模板生成和更新关系图时，规则是否处于活动状态。
        ///   <bulletList>
        ///     <bullet_item>选中 - 在基于输入模板生成和更新任何逻辑示意图期间，添加的规则将变为活动状态。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 在基于输入模板生成或更新任何逻辑示意图期间，添加的规则将不会变为活动状态。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Active")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _is_active_value _is_active { get; set; }

        public enum _is_active_value
        {
            /// <summary>
            /// <para>ACTIVE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ACTIVE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>INACTIVE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INACTIVE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Trace Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of trace the rule will perform to build the diagram content.</para>
        ///   <bulletList>
        ///     <bullet_item>Connected— A connected trace is executed from the utility network or trace network elements currently represented in the diagram when the rule starts and spans outward along connected elements. This is the default.</bullet_item><para/>
        ///     <bullet_item>Subnetwork— A subnetwork trace is executed from the utility network elements currently represented in the diagram when the rule starts and spans outward along connected elements to find sources or sinks from which it spans outward along the related subnetwork.</bullet_item><para/>
        ///     <bullet_item>Upstream—An upstream trace is executed from the utility network or trace network elements currently represented in the diagram when the rule starts to discover elements upstream.</bullet_item><para/>
        ///     <bullet_item>Downstream—A downstream trace is executed from the utility network or trace network elements currently represented in the diagram when the rule starts to discover elements downstream.</bullet_item><para/>
        ///     <bullet_item>Shortest path— A shortest path trace is executed from the trace network features currently specified as starting points in the diagram when the rule starts to discover features along the shortest path between those starting points. The cost of traversing the path is determined based on the network attribute set for the Shortest Path Network Attribute Name parameter value regardless of flow direction.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定规则在生成关系图内容时将执行的跟踪类型。</para>
        ///   <bulletList>
        ///     <bullet_item>已连接 - 当规则启动并沿连接的元素向外扩展时，将从逻辑示意图中当前表示的公共设施网络或追踪网络元素执行连接的追踪。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>子网 - 当规则启动并沿连接的元素向外延伸以查找沿相关子网向外延伸的源或汇时，将从逻辑示意图中当前表示的公共设施网络元素执行子网追踪。</bullet_item><para/>
        ///     <bullet_item>上游 - 当规则开始发现上游元素时，将从逻辑示意图中当前表示的公共设施网络或追踪网络元素执行上游追踪。</bullet_item><para/>
        ///     <bullet_item>下游 - 当规则开始发现下游元素时，将从逻辑示意图中当前表示的公共设施网络或追踪网络元素执行下游追踪。</bullet_item><para/>
        ///     <bullet_item>最短路径 - 当规则开始发现这些起点之间的最短路径上的要素时，将从逻辑示意图中当前指定为起点的追踪网络要素执行最短路径追踪。无论流向如何，遍历路径的成本都是根据为最短路径网络属性名称参数值设置的网络属性确定的。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Trace Type")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _trace_type { get; set; }


        /// <summary>
        /// <para>Domain Network</para>
        /// <para>The name of the domain network where the trace is run for a utility network. This parameter is required when running the subnetwork, upstream, and downstream trace types.</para>
        /// <para>在其中为公共设施网络运行追踪的域网络的名称。运行子网、上游和下游追踪类型时，此参数是必需的。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Domain Network")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _domain_network { get; set; } = null;


        /// <summary>
        /// <para>Tier</para>
        /// <para>The name of the tier where the trace starts for a utility network. This parameter is optional when running the connected trace type; it is required when running the subnetwork, upstream, and downstream trace types.</para>
        /// <para>公共设施网络追踪开始的层的名称。运行连接的跟踪类型时，此参数是可选的;在运行子网、上游和下游追踪类型时，它是必需的。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Tier")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _tier { get; set; } = null;


        /// <summary>
        /// <para>Target Tier</para>
        /// <para>The name of the target tier to which the input tier flows for a utility network. If this parameter is missing for upstream and downstream traces, those traces will stop when they reach the boundary of the starting subnetwork. This parameter can be used to allow these traces to continue either farther up or farther down the hierarchy.</para>
        /// <para>公共设施网络的输入层流向的目标层的名称。如果上游和下游追踪缺少此参数，则这些追踪将在到达起始子网的边界时停止。此参数可用于允许这些跟踪在层次结构中继续向上或向下延伸。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Tier")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _target_tier { get; set; } = null;


        /// <summary>
        /// <para>Include Structures</para>
        /// <para><xdoc>
        ///   <para>Specifies whether structure features and objects will be included in the trace results.
        ///   <bulletList>
        ///     <bullet_item>Checked—Structure features and objects will be included in the trace results.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Structure features and objects will not be included in the trace results. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否将结构特征和对象包含在跟踪结果中。
        ///   <bulletList>
        ///     <bullet_item>选中 - 结构特征和对象将包含在追踪结果中。</bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪结果中不会包括结构特征和对象。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Structures")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_structures_value _include_structures { get; set; } = _include_structures_value._false;

        public enum _include_structures_value
        {
            /// <summary>
            /// <para>INCLUDE_STRUCTURES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_STRUCTURES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_STRUCTURES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_STRUCTURES")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Include Barriers Features</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the traversability barrier features will be included in the trace results. Traversability barriers are optional even if they have been preset in the subnetwork definition. This parameter does not apply to device features with terminals.
        ///   <bulletList>
        ///     <bullet_item>Checked—Traversability barrier features will be included in the trace results. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Traversability barrier features will not be included in the trace results.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定追踪结果中是否包括可遍历性障碍要素。可遍历性障碍是可选的，即使它们已在子网定义中预设。此参数不适用于带终端的设备功能。
        ///   <bulletList>
        ///     <bullet_item>选中 - 可穿越性障碍要素将包含在追踪结果中。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 追踪结果中不会包括可穿越性障碍要素。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Barriers Features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_barriers_value _include_barriers { get; set; } = _include_barriers_value._true;

        public enum _include_barriers_value
        {
            /// <summary>
            /// <para>INCLUDE_BARRIERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_BARRIERS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_BARRIERS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_BARRIERS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Condition Barriers</para>
        /// <para><xdoc>
        ///   <para>Sets a traversability barrier condition on features based on a comparison to a network attribute or check for a category string. A condition barrier uses a network attribute, an operator and a type, and an attribute value. For example, stop a trace when a feature has the Device Status attribute equal to the specific value of Open. When a feature meets this condition, the trace stops. If you're using more than one attribute, you can use the Combine using parameter to define an And or an Or condition.</para>
        ///   <para>Condition barrier components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Name—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Type—Choose a specific value or network attribute from the value that is specified in the Name parameter.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that would cause termination based on the operator value.  </bullet_item><para/>
        ///     <bullet_item>Combine using—Set this value if you have multiple attributes to add. You can combine them using an And or an Or condition.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The condition barriers Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The condition barriers Type value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Specific Value—Filter by a specific value.  </bullet_item><para/>
        ///     <bullet_item>Network Attribute—Filter by a network attribute.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>根据与网络属性的比较或检查类别字符串，对要素设置可穿越性屏障条件。条件屏障使用网络属性、运算符和类型以及属性值。例如，当功能的“设备状态”属性等于特定值“打开”时，停止跟踪。当要素满足此条件时，跟踪将停止。如果要使用多个属性，则可以使用“组合使用”参数来定义“和”或“条件。</para>
        /// <para>条件屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>名称 （Name） - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>类型 - 从名称参数中指定的值中选择特定值或网络属性。</bullet_item><para/>
        ///     <bullet_item>值 - 根据运算符值为输入属性类型提供导致终止的特定值。</bullet_item><para/>
        ///     <bullet_item>组合使用- 如果要添加多个属性，请设置此值。您可以使用 And 或 Or 条件将它们组合在一起。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>条件障碍运算符值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>条件屏障类型值选项如下：
        ///   <bulletList>
        ///     <bullet_item>特定值 （Specific Value） - 按特定值进行过滤。</bullet_item><para/>
        ///     <bullet_item>网络属性 - 按网络属性进行过滤。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Condition Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _condition_barriers { get; set; } = null;


        /// <summary>
        /// <para>Function Barriers</para>
        /// <para><xdoc>
        ///   <para>Sets a traversability barrier on features based on a function. Function barriers can be used to do such things as restrict how far the trace travels from the starting point, or set a maximum value to stop a trace. For example, the length of each line traveled is added to the total distance traveled so far. When the total length traveled reaches the value specified, the trace stops.</para>
        ///   <para>Function barrier components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Function—Choose from a number of calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Attribute—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that, if discovered, will cause the termination.  </bullet_item><para/>
        ///     <bullet_item>Use Local Values—Calculate values in each direction as opposed to an overall global value, for example, a function barrier that is calculating the sum of Shape length in which the trace terminates if the value is greater than or equal to 4. In the global case, after you have traversed two edges with a value of 2, you have already reached a Shape length sum of 4, so the trace stops. If local values are used, the local values along each path change, and the trace continues.
        ///       <bulletList>
        ///         <bullet_item>Checked—Local values will be used.      </bullet_item><para/>
        ///         <bullet_item>Unchecked—Global values will be used. This is the default.      </bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The function barrier Function value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Minimum—The minimum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Maximum—The maximum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Add—The sum of the input values.  </bullet_item><para/>
        ///     <bullet_item>Average—The average of the input values.  </bullet_item><para/>
        ///     <bullet_item>Count—The number of features.  </bullet_item><para/>
        ///     <bullet_item>Subtract—The difference between the input values.
        ///       <para>Subnetwork controllers and loops trace types do not support the subtract function.    </para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>For example, the starting point feature has a value of 20. The next feature has a value of 30. If you use the minimum function, the result is 20, maximum is 30, add is 50, average is 25, count is 2, and subtract is -10.</para>
        ///   <para>The function barrier Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在基于函数的要素上设置可遍历性障碍。功能屏障可用于执行诸如限制跟踪从起点行进的距离或设置停止跟踪的最大值等操作。例如，每条行进线的长度将添加到到目前为止的总行进距离中。当行进的总长度达到指定的值时，迹线将停止。</para>
        /// <para>功能屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>函数 （Function） - 从多个计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>属性 - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>值 - 为输入属性类型提供特定值，如果发现该值将导致终止。</bullet_item><para/>
        /// <bullet_item>使用局部值 （Use Local Values） - 计算每个方向上的值，而不是整体全局值，例如，函数屏障，用于计算形状长度之和，如果该值大于或等于 4，则追踪将在其中终止。在全局情况下，在遍历值为 2 的两条边后，已达到 Shape 长度总和为 4，因此迹线停止。如果使用局部值，则沿每个路径的局部值将更改，并且跟踪将继续。
        ///       <bulletList>
        ///         <bullet_item>选中 - 将使用本地值。</bullet_item><para/>
        ///         <bullet_item>未选中—将使用全局值。这是默认设置。     </bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>功能屏障 函数值选项如下：
        ///   <bulletList>
        ///     <bullet_item>最小值 - 输入值的最小值。</bullet_item><para/>
        ///     <bullet_item>最大值 （Maximum） - 输入值的最大值。</bullet_item><para/>
        ///     <bullet_item>添加 - 输入值的总和。</bullet_item><para/>
        ///     <bullet_item>平均值 - 输入值的平均值。</bullet_item><para/>
        ///     <bullet_item>计数 - 要素数。</bullet_item><para/>
        /// <bullet_item>减法 - 输入值之间的差值。
        ///       <para>子网控制器和环路追踪类型不支持减法函数。</para>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>例如，起点要素的值为 20。下一个要素的值为 30。如果使用最小值函数，则结果为 20，最大值为 30，加法为 50，平均值为 25，count 为 2，减法为 -10。</para>
        /// <para>功能障碍运算符值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Function Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _function_barriers { get; set; } = null;


        /// <summary>
        /// <para>Apply Traversability To</para>
        /// <para><xdoc>
        ///   <para>The type of traversability to enforce. Traversability scope dictates whether traversability is enforced at junctions, edges, or both. For example, if a condition barrier is defined to stop the trace if Device Status is equal to Open and traversability scope is set to edges only, the trace will not stop—even if it encounters an open device—because Device Status is only applicable to junctions. In other words, this parameter indicates to the trace whether to ignore junctions, edges, or both.
        ///   <bulletList>
        ///     <bullet_item>Both junctions and edges—Traversability will be applied to both junctions and edges.  </bullet_item><para/>
        ///     <bullet_item>Junctions only—Traversability will be applied to junctions only.  </bullet_item><para/>
        ///     <bullet_item>Edges only—Traversability will be applied to edges only.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>要强制执行的可遍历性类型。可遍历性范围决定了是在交汇点和/或边强制实施遍历性。例如，如果将条件屏障定义为在“设备状态”等于“打开”且“可遍历性范围”设置为“仅边缘”时停止跟踪，则跟踪不会停止（即使遇到打开的设备），因为“设备状态”仅适用于交汇点。换言之，此参数向迹线指示是忽略交汇点和/或边。
        ///   <bulletList>
        ///     <bullet_item>交汇点和边 - 可穿越性将应用于交汇点和边。</bullet_item><para/>
        ///     <bullet_item>仅限交汇点—可穿越性将仅应用于交汇点。</bullet_item><para/>
        ///     <bullet_item>仅边—可遍历性将仅应用于边。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Apply Traversability To")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _traversability_scope_value _traversability_scope { get; set; } = _traversability_scope_value._BOTH_JUNCTIONS_AND_EDGES;

        public enum _traversability_scope_value
        {
            /// <summary>
            /// <para>Both junctions and edges</para>
            /// <para>Both junctions and edges—Traversability will be applied to both junctions and edges.  </para>
            /// <para>交汇点和边 - 可穿越性将应用于交汇点和边。</para>
            /// </summary>
            [Description("Both junctions and edges")]
            [GPEnumValue("BOTH_JUNCTIONS_AND_EDGES")]
            _BOTH_JUNCTIONS_AND_EDGES,

            /// <summary>
            /// <para>Junctions only</para>
            /// <para>Junctions only—Traversability will be applied to junctions only.  </para>
            /// <para>仅限交汇点—可穿越性将仅应用于交汇点。</para>
            /// </summary>
            [Description("Junctions only")]
            [GPEnumValue("JUNCTIONS_ONLY")]
            _JUNCTIONS_ONLY,

            /// <summary>
            /// <para>Edges only</para>
            /// <para>Edges only—Traversability will be applied to edges only.  </para>
            /// <para>仅边—可遍历性将仅应用于边。</para>
            /// </summary>
            [Description("Edges only")]
            [GPEnumValue("EDGES_ONLY")]
            _EDGES_ONLY,

        }

        /// <summary>
        /// <para>Filter Barriers</para>
        /// <para><xdoc>
        ///   <para>Specifies when the trace will stop for a specific category or network attribute. For example, stop a trace at features that have a life cycle status attribute that is equal to a certain value. This parameter is used to set a terminator based on a value of a network attribute that is defined in the system. If using more than one attribute, you can use the Combine Using option to define an And or an Or condition.</para>
        ///   <para>Filter barrier components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Name—Choose to filter by category or any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of different operators.  </bullet_item><para/>
        ///     <bullet_item>Type—Choose a specific value or network attribute from the value that is specified in the Name parameter.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that would cause termination based on the operator value.  </bullet_item><para/>
        ///     <bullet_item>Combine Using—Set this value if you have multiple attributes to add. You can choose to combine them using an And or an Or condition.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The filter barriers Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation in which all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation in which not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation in which at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation in which none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The filter barriers Type value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Specific Value—Filter by a specific value.  </bullet_item><para/>
        ///     <bullet_item>Network Attribute—Filter by a network attribute.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定特定类别或网络属性的跟踪何时停止。例如，在生命周期状态属性等于特定值的要素处停止追踪。此参数用于根据系统中定义的网络属性的值设置终结符。如果使用多个属性，则可以使用“组合使用”选项来定义“和”或“条件。</para>
        /// <para>过滤屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>名称 （Name） - 选择按类别或系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 - 从多个不同的运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>类型 - 从名称参数中指定的值中选择特定值或网络属性。</bullet_item><para/>
        ///     <bullet_item>值 - 根据运算符值为输入属性类型提供导致终止的特定值。</bullet_item><para/>
        ///     <bullet_item>合并方式 （Combine Using） - 如果要添加多个属性，请设置此值。您可以选择使用 And 或 Or 条件组合它们。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>筛选器屏障运算符值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>筛选屏障类型值选项如下：
        ///   <bulletList>
        ///     <bullet_item>特定值 （Specific Value） - 按特定值进行过滤。</bullet_item><para/>
        ///     <bullet_item>网络属性 - 按网络属性进行过滤。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Filter Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _filter_barriers { get; set; } = null;


        /// <summary>
        /// <para>Filter Function Barriers</para>
        /// <para><xdoc>
        ///   <para>Filters the results of the trace for a specific category.</para>
        ///   <para>Filter function barriers components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Function—Choose from a number of different calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Attribute—Choose to filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of different operators.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that, if discovered, will cause the termination.  </bullet_item><para/>
        ///     <bullet_item>Use Local Values—Calculates values in each direction as opposed to an overall global value. For example, a function barrier that is calculating the sum of Shape length where the trace terminates if the value is greater than or equal to 4. In the global case, after you have traversed two edges with a value of 2, you will have already reached a shape length sum of 4, so the trace stops. If local values are used, the local values along each path change, or the trace continues.
        ///       <bulletList>
        ///         <bullet_item>Checked—Use local values.      </bullet_item><para/>
        ///         <bullet_item>Unchecked—Use global values. This is the default.      </bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The filter function barriers Function value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Minimum—The minimum of the input values  </bullet_item><para/>
        ///     <bullet_item>Maximum—The maximum of the input values  </bullet_item><para/>
        ///     <bullet_item>Add—The sum of the values  </bullet_item><para/>
        ///     <bullet_item>Average—The average of the input values  </bullet_item><para/>
        ///     <bullet_item>Count—The number of features.  </bullet_item><para/>
        ///     <bullet_item>Subtract—The difference between the values. Subnetwork controllers and loops trace types do not support the subtract function.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>For example, there is a starting point feature with a value of 20. The next feature has a value of 30. If you are using the Minimum function, the result is 20. Maximum is 30, Add is 50, Average is 25, Count is 2, and Subtract is -10.</para>
        ///   <para>The filter function barriers Operator value options are as follows:
        ///   <bulletList>
        ///     <bullet_item>Is equal to—The attribute is equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Does not equal—The attribute is not equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than—The attribute is greater than the value.  </bullet_item><para/>
        ///     <bullet_item>Is greater than or equal to—The attribute is greater than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than—The attribute is less than the value.  </bullet_item><para/>
        ///     <bullet_item>Is less than or equal to—The attribute is less than or equal to the value.  </bullet_item><para/>
        ///     <bullet_item>Includes the values—A bitwise AND operation where all bits in the value are present in the attribute (bitwise AND == value).  </bullet_item><para/>
        ///     <bullet_item>Does not include the values—A bitwise AND operation where not all of the bits in the value are present in the attribute (bitwise AND != value).  </bullet_item><para/>
        ///     <bullet_item>Includes any—A bitwise AND operation where at least one bit in the value is present in the attribute (bitwise AND == True).  </bullet_item><para/>
        ///     <bullet_item>Does not include any—A bitwise AND operation where none of the bits in the value are present in the attribute (bitwise AND == False).  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>筛选特定类别的跟踪结果。</para>
        /// <para>滤波功能屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>函数 （Function） - 从多种不同的计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>属性 （Attribute） - 选择按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 - 从多个不同的运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>值 - 为输入属性类型提供特定值，如果发现该值将导致终止。</bullet_item><para/>
        /// <bullet_item>使用局部值 （Use Local Values） - 计算每个方向上的值，而不是整体全局值。例如，一个函数屏障，用于计算 Shape 长度的总和，如果该值大于或等于 4，则跟踪将终止。在全局情况下，在遍历值为 2 的两条边后，形状长度总和将达到 4，因此迹线将停止。如果使用局部值，则沿每个路径的局部值将更改，或者跟踪将继续。
        ///       <bulletList>
        ///         <bullet_item>选中 （Checked） - 使用本地值。</bullet_item><para/>
        ///         <bullet_item>未选中 - 使用全局值。这是默认设置。     </bullet_item><para/>
        ///       </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// <para>过滤器功能障碍功能值选项如下：
        ///   <bulletList>
        ///     <bullet_item>最小值 - 输入值的最小值</bullet_item><para/>
        ///     <bullet_item>最大值 （Maximum） - 输入值的最大值</bullet_item><para/>
        ///     <bullet_item>添加 - 值之和（SUM OF THE VALUES）</bullet_item><para/>
        ///     <bullet_item>平均值 （Average） - 输入值的平均值</bullet_item><para/>
        ///     <bullet_item>计数 - 要素数。</bullet_item><para/>
        ///     <bullet_item>减法 - 值之间的差值。子网控制器和环路追踪类型不支持减法函数。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>例如，有一个值为 20 的起点要素。下一个要素的值为 30。如果使用最小值函数，则结果为 20。最大值为 30，加法为 50，平均值为 25，计数为 2，减法为 -10。</para>
        /// <para>过滤器功能障碍运算符值选项如下：
        ///   <bulletList>
        ///     <bullet_item>等于- 属性等于值。</bullet_item><para/>
        ///     <bullet_item>不等于 - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>大于—属性大于值。</bullet_item><para/>
        ///     <bullet_item>大于或等于- 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>小于- 属性小于值。</bullet_item><para/>
        ///     <bullet_item>小于或等于- 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>包括值 - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>不包括值 - 按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>包括 any - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>不包括任何 - 按位 AND 操作，其中值中不存在任何位在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Filter Function Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _filter_function_barriers { get; set; } = null;


        /// <summary>
        /// <para>Apply Filter To</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the filter for a specific category will be applied to junctions, edges, or both. For example, if a filter barrier is defined to stop the trace if Device Status is equal to Open and traversability scope is set to edges only, the trace will not stop—even if the trace encounters an open device—because Device Status is only applicable to junctions. In other words, this parameter indicates to the trace whether to ignore junctions, edges, or both.
        ///   <bulletList>
        ///     <bullet_item>Both junctions and edges—The filter will be applied to both junctions and edges. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Junctions only—The filter will be applied to junctions only.  </bullet_item><para/>
        ///     <bullet_item>Edges only—The filter will be applied to edges only.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是将特定类别的过滤器应用于交汇点和/或边。例如，如果将筛选器屏障定义为在“设备状态”等于“打开”且“可遍历性范围”设置为“仅边缘”时停止跟踪，则即使跟踪遇到打开的设备，跟踪也不会停止，因为“设备状态”仅适用于交汇点。换言之，此参数向迹线指示是忽略交汇点和/或边。
        ///   <bulletList>
        ///     <bullet_item>交汇点和边 - 过滤器将同时应用于交汇点和边。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>仅限交汇点 - 过滤器将仅应用于交汇点。</bullet_item><para/>
        ///     <bullet_item>仅边 - 过滤器将仅应用于边。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Apply Filter To")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _filter_scope_value _filter_scope { get; set; } = _filter_scope_value._BOTH_JUNCTIONS_AND_EDGES;

        public enum _filter_scope_value
        {
            /// <summary>
            /// <para>Both junctions and edges</para>
            /// <para>Both junctions and edges—The filter will be applied to both junctions and edges. This is the default.  </para>
            /// <para>交汇点和边 - 过滤器将同时应用于交汇点和边。这是默认设置。 </para>
            /// </summary>
            [Description("Both junctions and edges")]
            [GPEnumValue("BOTH_JUNCTIONS_AND_EDGES")]
            _BOTH_JUNCTIONS_AND_EDGES,

            /// <summary>
            /// <para>Junctions only</para>
            /// <para>Junctions only—The filter will be applied to junctions only.  </para>
            /// <para>仅限交汇点 - 过滤器将仅应用于交汇点。</para>
            /// </summary>
            [Description("Junctions only")]
            [GPEnumValue("JUNCTIONS_ONLY")]
            _JUNCTIONS_ONLY,

            /// <summary>
            /// <para>Edges only</para>
            /// <para>Edges only—The filter will be applied to edges only.  </para>
            /// <para>仅边 - 过滤器将仅应用于边。</para>
            /// </summary>
            [Description("Edges only")]
            [GPEnumValue("EDGES_ONLY")]
            _EDGES_ONLY,

        }

        /// <summary>
        /// <para>Filter by bitset network attribute</para>
        /// <para>The name of the network attribute that will be used to filter by bitset. This parameter is only applicable to upstream, downstream, and loops trace types. This parameter can be used to add special logic during a trace so the trace more closely reflects real-world scenarios. For example, for a loops trace, the Phases current network attribute can determine if the loop is a true electrical loop (the same phase is energized all around the loop, that is, A) and return only real electrical loops for the trace results. An example for an upstream trace is when tracing an electric distribution network, specify a Phases current network attribute, and the trace results will only include valid paths that are specified in the network attribute, not all paths.</para>
        /// <para>将用于按位集进行筛选的网络属性的名称。该参数仅适用于上游、下游和循环跟踪类型。此参数可用于在跟踪期间添加特殊逻辑，以便跟踪更接近地反映真实场景。例如，对于环路跟踪，相位电流网络属性可以确定环路是否为真正的电气环路（同一相位在环路周围通电，即 A），并仅返回跟踪结果的真实电气环路。上游跟踪的一个示例是，在跟踪配电网络时，指定 Phases 当前网络属性，跟踪结果将仅包括网络属性中指定的有效路径，而不是所有路径。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Filter by bitset network attribute")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _filter_bitset_network_attribute_name { get; set; } = null;


        /// <summary>
        /// <para>Filter by nearest</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the k-nearest neighbors algorithm will be used to return a number of features of a certain type within a given distance. When this parameter is used, you can specify a count and a cost as well as a collection of categories, an asset type, or both.
        ///   <bulletList>
        ///     <bullet_item>Checked—The k-nearest neighbors algorithm will be used to return a number of features as specified in the Count, Cost Network Attribute, Nearest Categories, or Nearest Asset Groups/Types parameter.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The k-nearest neighbors algorithm will not be used to filter results. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否使用 k 最近邻算法返回给定距离内特定类型的多个要素。使用此参数时，您可以指定盘点和成本，以及类别集合和/或资产类型。
        ///   <bulletList>
        ///     <bullet_item>选中—k-最近邻算法将用于返回在计数、成本网络属性、最近类别或最近资产组/类型参数中指定的多个要素。</bullet_item><para/>
        ///     <bullet_item>未选中—k最近邻算法将不用于过滤结果。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Filter by nearest")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _filter_nearest_value _filter_nearest { get; set; } = _filter_nearest_value._false;

        public enum _filter_nearest_value
        {
            /// <summary>
            /// <para>FILTER_BY_NEAREST</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("FILTER_BY_NEAREST")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_FILTER</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_FILTER")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Count</para>
        /// <para>The number of features to be returned when Filter by nearest is checked.</para>
        /// <para>选中按最近点过滤时要返回的要素数。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Count")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long? _nearest_count { get; set; } = null;


        /// <summary>
        /// <para>Cost Network Attribute</para>
        /// <para>The numeric network attribute that will be used to calculate nearness, cost, or distance when Filter by nearest is checked—for example, shape length.</para>
        /// <para>选中“按最近点过滤”时将用于计算邻近度、成本或距离的数字网络属性，例如形状长度。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Cost Network Attribute")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _nearest_cost_network_attribute { get; set; } = null;


        /// <summary>
        /// <para>Nearest Categories</para>
        /// <para>The categories that will be returned when Filter by nearest is checked—for example, protective.</para>
        /// <para>选中“按最近点筛选”时将返回的类别，例如，保护性类别。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Nearest Categories")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _nearest_categories { get; set; } = null;


        /// <summary>
        /// <para>Nearest Asset Groups/Types</para>
        /// <para>The asset groups and asset types that will be returned when Filter by nearest is checked—for example, ElectricDistributionDevice/Transformer/Step Down.</para>
        /// <para>选中“按最近点筛选”时将返回的资产组和资产类型，例如，ElectricDistributionDevice/Transformer/Step Down。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Nearest Asset Groups/Types")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _nearest_assets { get; set; } = null;


        /// <summary>
        /// <para>Propagators</para>
        /// <para><xdoc>
        ///   <para>Specifies the network attributes to propagate as well as how that propagation will occur during a trace. Propagated class attributes denote the key values on subnetwork controllers that are disseminated to the rest of the features in the subnetwork. For example, in an electric distribution model, you can propagate the phase value.</para>
        ///   <para>Propagators components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Attribute—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Substitution Attribute—Use a substituted value instead of bitset network attribute values. Substitutions are encoded based on the number of bits in the network attribute being propagated. A substitution is a mapping of each bit in phase to another bit. For example, for Phase AC, one substitution could map bit A to B, and bit C to null. In this example, the substitution for 1010 (Phase AC) is 0000-0010-0000-0000 (512). The substitution captures the mapping so you know that Phase A was mapped to B and Phase C was mapped to null, and not the other way around (that is, Phase A was not mapped to null and Phase C was not mapped to B).  </bullet_item><para/>
        ///     <bullet_item>Function—Choose from a number of calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that would cause termination based on the operator value.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The propagators function value options are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>PROPAGATED_BITWISE_AND—Compare the values from one feature to the next.</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MIN—Get the minimum value.</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MAX—Get the maximum value.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The propagators operator value options are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO—The attribute is equal to the value.</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL—The attribute is not equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN—The attribute is greater than the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO—The attribute is greater than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN—The attribute is less than the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO—The attribute is less than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES—A bitwise AND operation where all bits in the value are present in the attribute (bitwise AND == value).</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_THE_VALUES—A bitwise AND operation where not all of the bits in the value are present in the attribute (bitwise AND != value).</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY—A bitwise AND operation where at least one bit in the value is present in the attribute (bitwise AND == True).</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_ANY—A bitwise AND operation where none of the bits in the value are present in the attribute (bitwise AND == False).</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only available via Python.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要传播的网络属性以及该传播在追踪期间的发生方式。传播的类属性表示子网控制器上的键值，这些键值将传播到子网中的其余要素。例如，在配电模型中，可以传播相位值。</para>
        /// <para>传播器组件如下：
        ///   <bulletList>
        ///     <bullet_item>属性 - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>替换属性 - 使用替换值而不是位集网络属性值。替换是根据正在传播的网络属性中的位数进行编码的。替换是相位中每个位到另一个位的映射。例如，对于相位 AC，一个替换可以将位 A 映射到 B，将位 C 映射到 null。在此示例中，1010（相位 AC）的替换为 0000-0010-0000-0000 （512）。替换捕获映射，因此您知道阶段 A 映射到 B，阶段 C 映射到 null，而不是相反（即阶段 A 未映射到 null，阶段 C 未映射到 B）。 </bullet_item><para/>
        ///     <bullet_item>函数 （Function） - 从多个计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>值 - 根据运算符值为输入属性类型提供导致终止的特定值。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>传播器函数值选项如下：</para>
        ///   <bulletList>
        ///     <bullet_item>PROPAGATED_BITWISE_AND - 将一个要素的值与下一个要素的值进行比较。</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MIN - 获取最小值。</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MAX - 获取最大值。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>传播器运算符值选项如下：</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO - 属性等于值。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN - 属性大于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO - 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN - 属性小于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO - 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_THE_VALUES - 按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_ANY - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>此参数仅通过 Python 提供。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Propagators")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _propagators { get; set; } = null;


        /// <summary>
        /// <para>Description</para>
        /// <para>The description of the rule.</para>
        /// <para>规则的说明。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Description")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _description { get; set; } = null;


        /// <summary>
        /// <para>Output Network</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Network")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_utility_network { get; set; }


        /// <summary>
        /// <para>Output Diagram Template</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Diagram Template")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_template_name { get; set; }


        /// <summary>
        /// <para>Allow Indeterminate Flow</para>
        /// <para><xdoc>
        ///   <para>Specifies whether trace network features that have indeterminate or uninitialized flow will be traced. This parameter is only honored when running an upstream or downstream trace on a trace network.
        ///   <bulletList>
        ///     <bullet_item>Checked—Include trace network features that have indeterminate or uninitialized flow direction in the trace.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Do not include trace network features that have indeterminate or uninitialized flow direction. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否追踪具有不确定或未初始化流的追踪网络要素。仅当在跟踪网络上运行上游或下游跟踪时，才支持此参数。
        ///   <bulletList>
        ///     <bullet_item>选中 - 包括追踪中流向不确定或未初始化的追踪网络要素。</bullet_item><para/>
        ///     <bullet_item>未选中 - 不包括流向不确定或未初始化的追踪网络要素。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Allow Indeterminate Flow")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _allow_indeterminate_flow_value _allow_indeterminate_flow { get; set; } = _allow_indeterminate_flow_value._false;

        public enum _allow_indeterminate_flow_value
        {
            /// <summary>
            /// <para>TRACE_INDETERMINATE_FLOW</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("TRACE_INDETERMINATE_FLOW")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>IGNORE_INDETERMINATE_FLOW</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("IGNORE_INDETERMINATE_FLOW")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Path Direction</para>
        /// <para><xdoc>
        ///   <para>Specifies the direction of the path for a trace network. The cost of traversing the path is determined based on the value set for the Path Network Attribute Name. This parameter is only honored when running a Path trace type.</para>
        ///   <bulletList>
        ///     <bullet_item>NO_DIRECTION—Find the path between the two starting points regardless of the direction of flow. This is the default.</bullet_item><para/>
        ///     <bullet_item>PATH_UPSTREAM—Find the downstream path between the two starting points.</bullet_item><para/>
        ///     <bullet_item>PATH_DOWNSTREAM—Find the upstream path between the two starting points.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定追踪网络的路径方向。遍历路径的成本是根据为路径网络属性名称设置的值确定的。仅当运行 Path 跟踪类型时，才支持此参数。</para>
        ///   <bulletList>
        ///     <bullet_item>NO_DIRECTION - 无论流动方向如何，都要找到两个起点之间的路径。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>PATH_UPSTREAM - 查找两个起点之间的下游路径。</bullet_item><para/>
        ///     <bullet_item>PATH_DOWNSTREAM - 查找两个起点之间的上游路径。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Path Direction")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _path_direction_value _path_direction { get; set; } = _path_direction_value._NO_DIRECTION;

        public enum _path_direction_value
        {
            /// <summary>
            /// <para>NO_DIRECTION</para>
            /// <para>NO_DIRECTION—Find the path between the two starting points regardless of the direction of flow. This is the default.</para>
            /// <para>NO_DIRECTION - 无论流动方向如何，都要找到两个起点之间的路径。这是默认设置。</para>
            /// </summary>
            [Description("NO_DIRECTION")]
            [GPEnumValue("NO_DIRECTION")]
            _NO_DIRECTION,

            /// <summary>
            /// <para>PATH_UPSTREAM</para>
            /// <para>PATH_UPSTREAM—Find the downstream path between the two starting points.</para>
            /// <para>PATH_UPSTREAM - 查找两个起点之间的下游路径。</para>
            /// </summary>
            [Description("PATH_UPSTREAM")]
            [GPEnumValue("PATH_UPSTREAM")]
            _PATH_UPSTREAM,

            /// <summary>
            /// <para>PATH_DOWNSTREAM</para>
            /// <para>PATH_DOWNSTREAM—Find the upstream path between the two starting points.</para>
            /// <para>PATH_DOWNSTREAM - 查找两个起点之间的上游路径。</para>
            /// </summary>
            [Description("PATH_DOWNSTREAM")]
            [GPEnumValue("PATH_DOWNSTREAM")]
            _PATH_DOWNSTREAM,

        }

        /// <summary>
        /// <para>Shortest Path Network Attribute Name</para>
        /// <para>The network attribute used to calculate the path for a trace network. When running a shortest path trace type, the shortest path is calculated using a numeric network attribute such as shape length. Cost and distance based paths can both be achieved. This parameter is required when running a shortest path trace.</para>
        /// <para>用于计算追踪网络路径的网络属性。运行最短路径追踪类型时，将使用数字网络属性（如形状长度）计算最短路径。基于成本和距离的路径都可以实现。运行最短路径跟踪时，此参数是必需的。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Shortest Path Network Attribute Name")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _path_network_weight_name { get; set; } = null;


        public AddTraceRule SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}